//package morenoapp.model;
//
//import com.jgoodies.binding.beans.Model;
//import java.net.URI;
//import java.util.Date;
//import morenoapp.model.enums.MorenoPollType;
//import morenoapp.model.data.MorenoModelBatchJob;
//import morenoapp.model.listeners.MorenoModelListener;
//import morenoapp.model.enums.MorenoModelStage;
//import java.io.File;
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.HashSet;
//import java.util.List;
//import java.util.Set;
//import morenoapp.model.enums.MorenoRespondentsSortOrder;
//import morenoapp.model.data.MorenoModelFace;
//import morenoapp.model.data.MorenoQuestionFace;
//import morenoapp.model.data.MorenoRespondentFace;
//import morenoapp.model.impl.MorenoModelImpl;
//import morenoapp.model.impl.listeners.MorenoModelFire;
//import morenoapp.model.view.MorenoSociogramConfig;
//import morenoapp.util.I18N;
//
///**
// *
// * @author dmitry.mamonov
// */
//@Deprecated
//public class MorenoModelProxy extends Model implements MorenoModelFace {
//    private boolean modelInstantiated = false;
//
//    private MorenoModelImpl model = new MorenoModelImpl();
//
//    private Set<MorenoModelListener> listeners = new HashSet<MorenoModelListener>();
//
//    private MorenoModelFireProxy morenoModelFireProxy = new MorenoModelFireProxy();
//
//    private MorenoSociogramViewProxy morenoViewProxy = new MorenoSociogramViewProxy();
//
//    public String getDescription() {
//        if (modelInstantiated) {
//            return model.getDescription();
//        } else {
//            return null;
//        }
//    }
//
//    public void setDescription(String name) {
//        if (modelInstantiated) {
//            model.setDescription(name);
//        }
//    }
//
//    public URI getStoreURI() {
//        if (modelInstantiated) {
//            return model.getStoreURI();
//        } else {
//            return null;
//        }
//    }
//
//    public long getVersion() {
//        if (modelInstantiated) {
//            return model.getVersion();
//        } else {
//            return 0L;
//        }
//    }
//
//    public Date getCreationDate() {
//        if (modelInstantiated) {
//            return model.getCreationDate();
//        } else {
//            return null;
//        }
//    }
//
//    public Date getLastSaveDate() {
//        if (modelInstantiated) {
//            return model.getLastSaveDate();
//        } else {
//            return null;
//        }
//    }
//
//    public int getPollLimit() {
//        if (modelInstantiated) {
//            return model.getPollLimit();
//        } else {
//            return 0;
//        }
//    }
//
//    public String getConclusion() {
//        if (modelInstantiated) {
//            return model.getConclusion();
//        } else {
//            return null;
//        }
//    }
//
//    public String getSupervisorInfo() {
//        if (modelInstantiated) {
//            return model.getSupervisorInfo();
//        } else {
//            return null;
//        }
//    }
//
//    public String getPollDate() {
//        if (modelInstantiated) {
//            return model.getPollDate();
//        } else {
//            return null;
//        }
//    }
//
//    public MorenoPollType getPollType() {
//        if (modelInstantiated) {
//            return model.getPollType();
//        } else {
//            return null;
//        }
//    }
//
//    public long getVersionComaptibility() {
//        if (modelInstantiated) {
//            return model.getVersionComaptibility();
//        } else {
//            return 0L;
//        }
//    }
//
//    public void setPollLimit(int _pollLimit) {
//        int oldValue = getPollLimit();
//        if (modelInstantiated) {
//            model.setPollLimit(_pollLimit);
//            firePropertyChange("pollLimit", oldValue, _pollLimit);
//        }
//    }
//
//    public void setConclusion(String conclusion) {
//        if (modelInstantiated) {
//            model.setConclusion(conclusion);
//        }
//    }
//
//    public void setSupervisorInfo(String supervisorInfo) {
//        if (modelInstantiated) {
//            model.setSupervisorInfo(supervisorInfo);
//        }
//    }
//
//    public void setPollDate(String pollDate) {
//        if (modelInstantiated) {
//            model.setPollDate(pollDate);
//        }
//    }
//
//    public void setPollType(MorenoPollType pollType) {
//        if (modelInstantiated) {
//            model.setPollType(pollType);
//        }
//    }
//
//    public long getLastId() {
//        if (modelInstantiated) {
//            return model.getLastId();
//        } else {
//            return 0L;
//        }
//    }
//
//    public long nextId() {
//        if (modelInstantiated) {
//            return model.nextId();
//        } else {
//            return 0L;
//        }
//    }
//
//    public void setLastId(long id) {
//        if (modelInstantiated) {
//            model.setLastId(id);
//        }
//    }
//
//    public MorenoQuestionFace createQuestion() {
//        MorenoQuestionFace result = model.createQuestion();
//        fireQuestionsListChanged();
//        return result;
//    }
//
//    public MorenoRespondentFace createRespondent() {
//        MorenoRespondentFace result = model.createRespondent();
//        fireRespondentsListChanged();
//        return result;
//    }
//
//    public boolean moveQuestionUp(MorenoQuestionFace _question) {
//        boolean result = model.moveQuestionUp(_question);
//        if (result) {
//            fireQuestionsListChanged();
//        }
//        return result;
//    }
//
//    public boolean moveQuestionDown(MorenoQuestionFace _question) {
//        boolean result = model.moveQuestionDown(_question);
//        if (result) {
//            fireQuestionsListChanged();
//        }
//        return result;
//    }
//
//    public List<MorenoQuestionFace> getQuestionsList() {
//        return model.getQuestionsList();
//    }
//
//    public List<MorenoRespondentFace> getRespondentsList() {
//        return model.getRespondentsList();
//    }
//
//    public void loadModel(File source) throws MorenoModelException {
//        modelInstantiated = false;
//        {
//            model = new MorenoModelImpl();
//            model.loadModel(source);
//            morenoViewProxy.setDelegate(model.getSociogramConfig());
//            model.setFireDelegate(morenoModelFireProxy);
//        }
//        modelInstantiated = true;
//
//        fireWholeModelChanged();
//    }
//
//    public void saveModel(File target) throws MorenoModelException {
//        model.saveModel(target);
//    }
//
//    public void sortRespondents(MorenoRespondentsSortOrder order) {
//        model.sortRespondents(order);
//        fireRespondentsListChanged();
//    }
//
//    public void addModelListener(MorenoModelListener lst) {
//        listeners.add(lst);
//    }
//
//    public void removeModelListener(MorenoModelListener lst) {
//        listeners.remove(lst);
//    }
//
//    protected void fireRespondentChanged(MorenoRespondentFace changed) {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onRespondentChanged(changed);
//            lst.onAnyElementChanged();
//        }
//    }
//
//    protected void fireRespondentsListChanged() {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onRespondentsListChanged();
//            lst.onAnyElementChanged();
//        }
//    }
//
//    protected void fireQuestionsListChanged() {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onQuestionsListChanged();
//            lst.onAnyElementChanged();
//        }
//    }
//
//    protected void fireQuestionChanged(MorenoQuestionFace queston) {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onQuestionChanged(queston);
//            lst.onAnyElementChanged();
//        }
//    }
//
//    protected void fireQuestionItemsCountChanged() {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onQuestionItemsCountChanged();
//            lst.onAnyElementChanged();
//        }
//    }
//
//    protected void fireWholeModelChanged() {
//        for (MorenoModelListener lst : new ArrayList<MorenoModelListener>(listeners)) {
//            lst.onRespondentsListChanged();
//            lst.onQuestionsListChanged();
//            lst.onQuestionItemsCountChanged();
//            lst.onWholeModelChanged();
//            lst.onAnyElementChanged();
//        }
//    }
//
//    public void closeModel() {
//        modelInstantiated = false;
//        model = new MorenoModelImpl();
//        model.setFireDelegate(morenoModelFireProxy);
//        fireWholeModelChanged();
//    }
//
//    public MorenoModelStage getStage() {
//        if (modelInstantiated == false) {
//            return MorenoModelStage.NO_MODEL;
//        } else {
//            return model.getStage();
//        }
//    }
//
//    public void createModel() {
//        if (modelInstantiated) {
//            throw new IllegalStateException(I18N.get("error.model_already_exists"));
//        } else {
//            model.setFireDelegate(morenoModelFireProxy);
//            modelInstantiated = true;
//        }
//        fireWholeModelChanged();
//    }
//
//    public void doBatchJob(MorenoModelBatchJob batchJob) {
//        if (batchJob != null) {
//            model.doBatchJob(batchJob);
//            fireWholeModelChanged();
//        }
//    }
//
//    public void deleteQuestions(Collection<MorenoQuestionFace> quetions) {
//        model.deleteQuestions(quetions);
//        fireQuestionsListChanged();
//    }
//
//    public void deleteRespondents(Collection<MorenoRespondentFace> respondents) {
//        model.deleteRespondents(respondents);
//        fireRespondentsListChanged();
//    }
//
//    public MorenoSociogramConfig getSociogramConfig() {
//        return morenoViewProxy;
//    }
//
//    class MorenoModelFireProxy implements MorenoModelFire {
//        public void fireRespondentChanged(MorenoRespondentFace respondent) {
//            MorenoModelProxy.this.fireRespondentChanged(respondent);
//        }
//
//        public void fireQuestionChanged(MorenoQuestionFace question) {
//            MorenoModelProxy.this.fireQuestionChanged(question);
//        }
//    }
//}
